{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 60,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 114,
   "metadata": {
    "collapsed": false,
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1fa647f1048>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from mpl_toolkits.mplot3d import Axes3D\n",
    "\n",
    "def get_ortho(a, b):\n",
    "    temp = np.linalg.inv(a.T.dot(a)).dot(b.T.dot(a))\n",
    "    return a.dot(temp)\n",
    "\n",
    "A = np.array([[1], [2], [3]])\n",
    "B = np.array([[1], [1], [1]])\n",
    "E = get_ortho(A, B)\n",
    "\n",
    "fig = plt.figure()\n",
    "ax = Axes3D(fig)\n",
    "\n",
    "L = np.column_stack((np.zeros(3),A))\n",
    "ax.plot(L[0], L[1], L[2], color='r', label='A')\n",
    "\n",
    "L = np.column_stack((np.zeros(3),B))\n",
    "ax.plot(L[0], L[1], L[2], color='b', label='B')\n",
    "\n",
    "L = np.column_stack((B,E))\n",
    "ax.plot(L[0], L[1], L[2], color='g', label='E')\n",
    "\n",
    "plt.axis('equal')\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {
    "collapsed": false,
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[ 5.10138402]\n",
      " [ 2.54676909]\n",
      " [-0.02624036]]\n"
     ]
    },
    {
     "data": {
      "image/png": "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\nPKkeSVUxrSpJRYWF5t899zSsNnn8cbhqc9OgDbKGiUicumDdaB0R69tfybYSzqw8k/wR+Qx/Zjjf\ndvzWNt8d/Jpdtw4uv1yqR9qKVpPjthNcbeJwmDLBO9oNpoSmI/NSGigSocHekGA7MWz7X7dzeJfD\nWXjZQrq37x7ytWldP3s2HHusSQ/K5Jq2oVWmSoJZaZMOHeD6602+Ow0/M1jWYFEq2d5MJEKovSGD\naTSD9w2mW/tuQNOabqh/zb65380115jrMjPh4YclPZKq2mRVSShWtcm+ffXVJjU4eDj958zmMD5p\n72PdjeskaIuEiCYlp1CsG7SurtrJXeSmYGYBrr4uUCa3vffGwdz0gZtrr60/z+eT6pG2olXmuO1Y\naZPqapMH/I+vA+tUe5SvD8M+uYXDD/sE/xY/zi5OFIqaHTWyS7yIOVeeK2KPG5pWO1n/wHyLPH+E\neS2DeV3X1kp6pC1p9T1ui7UF2p13wtVXW3tYKvzVGRy+6Fr8m/2gobailpqKmoiL9ghxMOz2hvTj\nNytYNmK3EJrWMG1afdB2OuHKK83resEC6Wm3FW0mcEN92uSyy0w+0BH47Rf5e+GhC3PIazJwKasI\nilgKTntopdmas5XXJ7yOUiE2ug5KrXz6KZxwgpnK7nTWD0KOGyfpkbamzaRKglm97+Ji2DRlPU/T\nnykchQIyaLibDkipoIgtd5GbVwa8wsT3JjLm8DG89rvXWPb+MtsUilU58tFHcPrpgcH1NHjsMdix\nQwYh26o21eMOZvW+x/Xdzli2AqBRVONgGZ0aHqyRqfEiZv62+G9MfG8i5xScU7dHpF0KxVoI7fvv\n4dJLTdAGky7ZsUN62W1Zmw3clvzp+Yx2bSMDPwQyjd+R1SRtIvlucai01kxZMIVbF9xK0VFFvHzB\ny7jSTI/arnKkYGYBb1e5OfJI2QBBNNTq67ijUT6nnDcnb+OzrR1Y5OjKRn9HQOOySZvI1HhxMPza\nz6T3JvHYV48x4bgJPHHmEzhU+H7THXeYvVVBarTbgjY/5b253EVuJhS5mQDcdZfmttv8gAMvDt6i\nJ8voxBB2MYg9ku8Wzear9XHX5Lv4xTO/4Pw955N5WCbb92y3LTP1eMyaOqtXw6xZQffhkynsop4E\n7kZGjlTcfTdUHTBpk/fp0WDQ8rg8CdwielU1Vdw26TZG/mtk3XZj3k32K1J6PDByJBwIrAg4fDgs\n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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x26c625840b8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "#x的个数决定了样本量\n",
    "x = np.arange(-1,1,0.02)\n",
    "#y为理想函数\n",
    "y = 2*np.sin(x*2.3)+5*x**2\n",
    "#y1为离散的拟合数据\n",
    "y1 = y+0.5*(np.random.rand(len(x))-0.5)\n",
    "\n",
    "\n",
    "##################################\n",
    "#主要程序\n",
    "one=np.ones((len(x),1))#len(x)得到数据量\n",
    "x=x.reshape(len(x),1)\n",
    "x2=x*x\n",
    "A=np.hstack((x2, x, one))#两个100x1列向量合并成100x2,(100, 1) (100,1 ) (100, 2)\n",
    "C=y1.reshape(len(y1),1)\n",
    "# print(A)\n",
    "#等同于C=y1.reshape(100,1)\n",
    "#虽然知道y1的个数为100但是程序中不应该出现人工读取的数据\n",
    "\n",
    "def optimal(A,b):\n",
    "    B = A.T.dot(b)\n",
    "    AA = np.linalg.inv(A.T.dot(A))#求A.T.dot(A)的逆\n",
    "    P=AA.dot(B)\n",
    "    print(P)\n",
    "    return A.dot(P)\n",
    "\n",
    "#求得的[a,b]=P=[[  2.88778507e+00] [ -1.40062271e-04]]\n",
    "yy = optimal(A,C)\n",
    "#yy=P[0]*x+P[1]\n",
    "##################################\n",
    "plt.plot(x,y,color='g',linestyle='-',marker='',label=u'理想曲线')\n",
    "plt.plot(x,y1,color='m',linestyle='',marker='o',label=u'拟合数据')\n",
    "plt.plot(x,yy,color='b',linestyle='-',marker='.',label=u\"拟合曲线\")\n",
    "# 把拟合的曲线在这里画出来\n",
    "plt.legend(loc='upper left')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 98,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[ 0.  -2.5  2.5]\n",
      "[  0.  10.   0.]\n",
      "[[-0.   1. ]\n",
      " [ 2.5  1. ]\n",
      " [-2.5  1. ]]\n",
      "[ 2.          3.33333333]\n"
     ]
    },
    {
     "data": {
      "image/png": "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\npxOSHEtyvO05Fnnjps1JfiNp4abNnZDkCUm/bHuOS0nyiyTPDL9+VYNfnk7cOzUDrw0fTg0/OnPy\nyfaMpA9Juq/tWaqxvUnSzZK+IklJfpPk9Gq32/Ye92J/Iel7bQ/RYdy0eUxsz0raLumpdid50/BQ\nxCFJpyTtT9KZ2SR9SdLnJb3e9iCXEEmP2T5oe3fbwyzxLkl9Sf86PNR0n+0rV7vRiYfb9mO2jyzz\n8ZFF6/yNBi9lH5j0PCudDeuL7bdJ+pakzyb5VdvzLEhyIck2DV513mj7+rZnkiTbt0k6leRg27Nc\nxnuHP7tbNTgEdnPbAy2yUdIfSfrnJNsl/Y+kVZ+fGnnrstVK8seX+3Pbfy7pNkk7s8bXJo6arWMa\n3bQZl2Z7SoNoP5DkwbbnWU6S07YPaHC+oAsnem+SdLvtD0q6QtLv2f5akk+0PNcbkpwcfj5l+yEN\nDit24tyUBq+MTyx6BfVNjSHcbV9VskuDl2C3J/nfNmcpgJs2r4Jta3Cc8ViSL7Y9z2K2ewtXVNme\nlvR+SS+2O9VAkj1JZpLMavCc+36Xom37SttXLXwt6QPqxj94kqQk/y3pZdtbhot2Sjq62u22fYz7\nHyVdJWn/8FKef2l5njfY/hPbJyS9R9J3bT/a5jzDk7gLN20+Jmlfl27abPvrkn4oaYvtE7Y/1fZM\nS9wk6ZOSdgyfa4eGe5Fd8A5JB2wf1uAf6P1JOnfZXUe9XdKTtp+T9LSk7yZ5pOWZlvorSQ8M/363\nSfq71W6Qd04CQDFt73EDAFaIcANAMYQbAIoh3ABQDOEGgGIINwAUQ7gBoBjCDQDF/B/iHT1o4Jpl\nuwAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1fa64a8fb00>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "\n",
    "P = np.array([[0, 0], [4, 0], [2, 5]])\n",
    "P1 = np.row_stack((P[1::,:], P[0,:]))\n",
    "X,X1 = P[:,0],P1[:,0]\n",
    "Y,Y1 = P[:,1],P1[:,1]\n",
    "K = (Y1-Y)/(X1-X)\n",
    "B = Y-K*X\n",
    "print(K)\n",
    "print(B)\n",
    "# for i in range(len(K)):\n",
    "#     lx = np.arange(0,2.5,0.02)\n",
    "#     ly = lx*K[i]+B[i]\n",
    "#     plt.plot(lx, ly)\n",
    "\n",
    "one = np.ones(len(K))\n",
    "A = np.column_stack((-K, one))\n",
    "print(A)\n",
    "def optimal(A,b):\n",
    "    B = A.T.dot(b)\n",
    "    AA = np.linalg.inv(A.T.dot(A))\n",
    "    P=AA.dot(B)\n",
    "    return P\n",
    "\n",
    "P2 = optimal(A,B)\n",
    "print(P2)\n",
    "plt.plot(P2[0], P2[1], 'o')\n",
    "plt.plot(X, Y, 'o')\n",
    "plt.axis(\"equal\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "metadata": {
    "collapsed": false,
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\nESZPhlWrQk+UlMCjj8KQIdChAwwYAFdeCcuXh2fma9bA9dfDQQd50x80CO69FwoLAVi3zqtn9epf\nXxIMBsMz73pA0s7lkeCrr+Ctt7zVG/DeiEsugT59oGNHGD4cHntsZ/vU2EcfwemnQ/fu0KULnHwy\nzJixc/Ds2TB1KhQVeY9LSkoo+uVBlMnLg/ffh3nzdnnyvfdgzBjo3NnLhrPPhs8+C88M8/PDM519\nkVSjH6AVkBX6OwVYAnTf22v69eunarnhBqlPH2nOnOq9XpK++MKbBkjt2kmnnCIde6yUmCjFxmrF\nrc+rVy9vMEjnnitt375DXbt21Ysvvlj9+dYjP/30kwKBgF588UV99ZWUlOQta2ysdN9NW6QDDvCe\n6NVLGjtWGjJE8vu9ES6+WNq8uXozLi2V7rtPSk6WfD5p0CBv+tnZ3vy6dNGzd6xVYqL3MC5O+vhj\n6c0331RycrJWrlwZ3oaIkKefflppaWnatGmTrrnm13WtQwdp4Z3veutiXJx0zDHSaadJXbt6I+y3\nn/TSS1IwWL0Z//yzdPLJ3rSaNpWOP1466SSpeXMJVHjO+TpxTNnOeg44QMrPl0477TQddNBBYW2D\nSDrjjDN09tlna8sWqXv3X9v/9LGlKjplvPegdWuvrY47TmrUyHtu9GhpyZLqzTQYlJ56SkpPl2bP\nrnbtwFxVJpcrM1JVfoA3gKP2Nk61g33yZOW06Ka73aUa1WG2RhyzSbffLq1fLxUXFysvL2/nqEVF\nRSooKNDmzdIDD0jDjtysMR0+1784R3mtOmjRffdpw/r1kqRgMKhPJk/W9P6j1I4flBrYrFGjrtSI\nES8LyvTnPz8hQL169VKwuh+qeuSRRx4RoL59s9ShQ1AtW67W8OHnaNCA6QLpxthrNOXaa7Vu7VpJ\nUmlpqRZMnaot48drrsvWhQmP6ahe32rcuGK9+KKUnx/Ujh07VFZWJslrz9zcXBUXl+n116WzzirT\n0AErdG76f/QZB2vH0KH6+p13VFRUJEnKycnRB7ffroeT/ixHmbJ7zdTo0RPVrt1SNWsmDR48RIDu\nvPPOiLVZOA0ePFiAJky4VyAdccQ7GjHifLVIXas0Nurtbn/QtOefV2lpqSRp65YtWvDooyrslaXn\nGKtTmn+gowb9rMsv9zKiqKhY+fn5O6dfWFiowsJCbdok3XWXdNzI7RrZ81vdFn+j1sZl6sdLLtGK\n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\n3JvALmLsxQAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x2317d5621d0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt  \n",
    "\n",
    "def fourier(x, y, n):\n",
    "    A = np.ones(len(x))\n",
    "    for i in np.arange(n):\n",
    "        A = np.column_stack((A, np.sin((i+1)*x)))\n",
    "        A = np.column_stack((A, np.cos((i+1)*x)))\n",
    "    K = optimal(A,y)\n",
    "    return np.dot(A,K)\n",
    "    \n",
    "def optimal(A,b):\n",
    "    B = A.T.dot(b)\n",
    "    AA = np.linalg.inv(A.T.dot(A))\n",
    "    P=AA.dot(B)\n",
    "    return P\n",
    "    \n",
    "# 产生一个方波(x,y)\n",
    "x = np.linspace(-10,10,300)\n",
    "y=[]\n",
    "for i in np.cos(x):\n",
    "    if i>0:\n",
    "        y.append(0)\n",
    "    else:\n",
    "        y.append(2)\n",
    "y=np.array(y)\n",
    "\n",
    "# write Your code, Fourier function\n",
    "plt.plot(x,y,color='g',label='origin')\n",
    "plt.plot(x,fourier(x,y,3),color='r',label='3')\n",
    "plt.plot(x,fourier(x,y,8),color='b',label='8')\n",
    "plt.plot(x,fourier(x,y,23),color='k',label='23')\n",
    "# fourier(x,y,3)\n",
    "plt.legend()\n",
    "plt.axis('equal')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "import numpy as np  \n",
    "import math\n",
    "import matplotlib.pyplot as plt\n",
    "import matplotlib.animation as animation\n",
    "\n",
    "def generator():\n",
    "    x = np.array([[2], [1]])\n",
    "    n = 120\n",
    "    p1 = [[],[]]\n",
    "    p2 = [[],[]]\n",
    "    for i in range(0, n):\n",
    "        a = math.radians(360/n*i)\n",
    "        Z = [[math.cos(a), -math.sin(a)], [math.sin(a), math.cos(a)]]\n",
    "        x2 = np.dot(Z, x)\n",
    "        y2 = np.dot(A, x2)\n",
    "        p1[0].append(x2[0][0])\n",
    "        p1[1].append(x2[1][0])\n",
    "        p2[0].append(y2[0][0])\n",
    "        p2[1].append(y2[1][0])\n",
    "        data = [p1, p2]\n",
    "        yield data\n",
    "        \n",
    "def update(datag):\n",
    "    fig_points.set_data(datag[0][0], datag[0][1])\n",
    "    fig_points2.set_data(datag[1][0], datag[1][1])\n",
    "    return fig_points\n",
    "\n",
    "A=np.array([[3,1],[2,4]])/4.0\n",
    "\n",
    "fig = plt.figure()\n",
    "\n",
    "fig_points, = plt.plot([], [], 'r.')\n",
    "fig_points2, = plt.plot([], [], 'b.')\n",
    "plt.axis('equal')\n",
    "plt.xlim(-5, 5)\n",
    "plt.ylim(-5, 5)\n",
    "ani = animation.FuncAnimation(fig, update, generator, interval=50,repeat=False)\n",
    "# plt.show()\n",
    "ani.save(\"animtz.gif\", writer=\"imagemagick\")"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.0"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
